package audioplayer

// AdapterType 表示播放器适配器类型
type AdapterType string

// 支持的播放器适配器类型
const (
	AdapterAplay   AdapterType = "aplay"   // 使用aplay命令行工具
	AdapterGolib   AdapterType = "golib"   // 使用纯Go实现的音频库
	AdapterAlsa    AdapterType = "alsa"    // 使用ALSA库
	AdapterNetwork AdapterType = "network" // 网络流媒体
	AdapterMpg123  AdapterType = "mpg123"  // 使用mpg123命令
	AdapterVirtual AdapterType = "virtual" // 虚拟播放器，不实际播放音频
)

// Config 播放器配置
type Config struct {
	// 适配器类型，为空则自动选择
	AdapterType AdapterType

	// 音频文件搜索路径
	AudioPath string

	// 缓冲区大小（字节）
	BufferSize int

	// 最大文件大小（字节），0表示无限制
	MaxFileSize int64

	// 默认音量（0.0-1.0）
	DefaultVolume float64

	// 首选采样率（Hz）
	PreferredSampleRate int

	// 首选音频格式
	PreferredFormat AudioFormat

	// 自动播放下一曲
	AutoPlayNext bool

	// 播放器命令路径
	PlayerPath string

	// 播放器命令参数
	PlayerArgs []string

	// 是否启用硬件加速
	EnableHardwareAcceleration bool

	// 输出设备，为空则使用默认设备
	OutputDevice string

	// 播放列表保存路径
	PlaylistSavePath string

	// 是否启用调试日志
	EnableDebugLog bool
}

// NewDefaultConfig 创建默认配置
func NewDefaultConfig() *Config {
	return &Config{
		AdapterType:                AdapterVirtual, // 默认使用虚拟播放器
		AudioPath:                  ".",            // 当前目录
		BufferSize:                 8192,           // 8KB缓冲区
		MaxFileSize:                0,              // 无限制
		DefaultVolume:              0.8,            // 80%音量
		PreferredSampleRate:        44100,          // 44.1KHz
		PreferredFormat:            FormatMP3,      // MP3格式
		AutoPlayNext:               false,          // 自动播放下一曲
		PlayerPath:                 "mpg123",       // mpg123命令路径
		PlayerArgs:                 []string{},     // 默认无额外参数
		EnableHardwareAcceleration: false,          // 默认禁用硬件加速
		OutputDevice:               "",             // 默认输出设备
		PlaylistSavePath:           "",             // 不保存播放列表
		EnableDebugLog:             false,          // 禁用调试日志
	}
}
